Linux压缩打包技术

GO

1. 常见压缩包后缀名及对应工具

后缀名 所使用的压缩工具
.gz gzip
.bz2 bzip2
.zip zip
.rar rar
.tar tar打包程序打包的文件
.tar.gz 先由tar打包,再由gzip压缩
.tar.bz2 先由tar打包,再由bzip2压缩
.tar.xz 先由tar打包,再由xz压缩

2. 常用压缩工具

2.1. gzip

格式 gzip [-d#] filename(其中#为1~9的数字)

选项 说明
-d 解压
-# 设定压缩等级
1为最差,9为最好,6为默认

说明:

  • gzip后面直接跟文件名,表示在当前目录下压缩该文件,而源文件也会消失。
  • gzip -d \*.gz 命令gzip -d后面跟压缩文件表示解压缩该压缩文件。解压后源文件会消失。 gunzip filename.gz 解压文件为源文件,不保留压缩文件
  • gzip 不支持压缩目录,压缩目录时会报错。
  • 关于-#选项,平时很少用到,使用默认压缩级别就够了。

2.2. bzip2

格式 bzip2 [-dz] filename

选项 说明
-z 压缩
不加该选项也是表示压缩文件
-d 解压缩

说明:

  • 该命令只有-z和-d两个常用选项。
  • 压缩或解压后源文件会消失。
  • 它的压缩级别有1~9,默认级别是9。
  • bzip2 不可以压缩目录,压缩目录会报错。

2.3. xz

格式 xz [-dz] filename

选项 说明
-z 压缩
不加该选项也是表示压缩文件
-d 解压缩

说明:

  • 该命令常用的只有-z和-d两个常用选项。
  • 压缩或解压后源文件会消失。
  • xz 不可以压缩目录,压缩目录会报错。

2.4. zip 和 unzip

zip 压缩包非常常见,在Linux里,zip可以压缩目录和文件。压缩目录时,需要指定目录下的文件。

格式:

  1. zip filename.zip filename 把文件filename压缩为filename.zip,且保存源文件filename
  2. zip -r dir.zip dir 把目录dir压缩为dir.zip,原目录保存(注意,若是目录中有软连接会把链接的原文件也压缩)

示例如下:

1
2
3
4
5
6
7
8
# zip test.txt.zip test.txt
adding: test.txt (deflated 63%)
zip test.zip test/*
adding: test/1 (stored 0%)
adding: test/2 (stored 0%)
adding: test/3 (stored 0%)
adding: test/test.txt (deflated 63%)
adding: test/test.txt.zip (stored 0%)

说明:

  • zip后面先跟目标文件名,即压缩后的自定义压缩包名,然后跟要压缩的文件或目录。
  • 若CentOS没有这个命令,要安装一下:yum install -y zip unzip
  • 当目录下还有二级目录甚至更多级目录是,zip命令仅仅是把二级目录本身压缩而已。如果想要一并压缩二级下的目录,必须加上-r选项,这样就不用加/*了。如下所示:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # zip -r tests.zip test/
    adding: test/ (stored 0%)
    adding: test/test.txt (deflated 63%)
    adding: test/test.txt.zip (stored 0%)
    adding: test/1 (stored 0%)
    adding: test/2 (stored 0%)
    adding: test/3 (stored 0%)
    adding: test/4/ (stored 0%)
    adding: test/4/5 (stored 0%)
    adding: test/4/6 (stored 0%)
    adding: test/4/7 (stored 0%)

unzip 是用于解压缩.zip格式文件的,unzip 1.txt.zip解压file.zip文件到当前目录下,且原压缩文件file.zip不会消失。

选项 说明
-l 可查看文件的清单
-d dir 解压到指定目录下

2.5. 查看压缩文件的命令

命令 作用
zcat 查看gzip压缩的文件的内容
bzcat 查看bzip2压缩的文件内容

2.6. tar

tar 是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成一个大文件,方便复制或者移动。

格式 tar [-zjxcvfpP] filename.tar 要打包的文件1 要打包的文件2 ……

常用选项 选项说明
-z 同时用gzip压缩
-j 同时用bzip2压缩
-J 同时用xz压缩
-x 解包或解压缩
-t 查看tar包里的文件
-c 建立一个tar包或者压缩文件包
-v 可视化
-f filename 表示压缩后的文件名为filename,或者解压文件filename
需要注意的是,如果是多个参数组合的情况,要把-f选项写到最后面)
-C dir 在解压解包时使用,解压到指定目录下
-u newfile 在之前的包的基础上更新新的文件到包里
-p小写 使用源文件的属性,压缩前什么属性压缩后还是什么属性(不常用)
-P大写 可以使用绝对路径(不常用)
–exclude filename 在打包或压缩时,不要将filename文件包括在内。支持通配符。 如:--exclude "*.sh" 将*.sh文件过滤掉不打包(不常用)(不常用)

一些常用的例子:

  • 打包 : tar -cvf test.tar test1 test2
  • 解包 : tar -xvf test.tar
  • 打包时排除 : tar -cvf test.tar --exclude 1.txt test3
  • 查看包或压缩包的文件列表 : tar -tf test.tar或test.tar.gz等
  • 打包的同时使用gzip压缩
    • 打包压缩: tar -zcvf test.tar.gz test
    • 解包解压缩: tar -zxvf test.tar.gz
  • 打包的同时使用bzip2压缩
    • 打包压缩: tar -jcvf test.tar.bz2 test
    • 解包解压缩: tar -jxvf test.tar.bz2
  • 打包的同时使用xz压缩
    • 打包压缩: tar -Jcvf test.tar.xz test
    • 解包解压缩: tar -Jxvf test.tar.xz

OK

0%